package com.foohoo.benchmark;

import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

/**
 * JMH启动类
 * 不支持debug模式运行, 需要run
 * IDEA环境下安装插件: JMH Plugin, 可以直接在目标case类上面右键, run
 *
 * annotation:
 * benchmarkMode -> Throughput 吞吐量 / AverageTime 平均耗时 / SampleTime 随机取样 / SingleShotTime 单次
 * OutputTimeUnit -> 输出结果的时间单位
 * Warmup -> 预热 1 轮, 每次 1s, 1s内反复调用目标方法, 以触发热点代码的编译优化
 * Measurement -> 测试 5 轮, 每次 3s， 3s内反复调用目标方法
 * fork -> 测试轮数
 * Threads -> 测试线程个数
 * State -> 生命周期, Thread 每个线程一个实例 / Benchmark 所有线程共享一个实例 / Group 每个线程组共享一个实例
 * Benchmark -> 需要测试的方法
 * Setup -> 需要在测试前初始化的方法
 * TearDown -> 需要在测试后回收资源的方法
 *
 * @author mzdbxqh
 * @date 2020-10-19 11:34
 **/
public class BenchMarkStarter {
	public static void main(String[] args) throws Exception {
		// 启动基准测试
		Options opt = new OptionsBuilder()
			// 要导入的测试类，默认导入全部
			// .include(ExceptionWithFillInStackTrace.class.getSimpleName())
			.build();
		// 执行测试
		new Runner(opt).run();
	}
}
